define('D',true);
require_once('../include/config.php');
require_once('../include/connect.php');
$link = mysql_connect(D_SERVER, D_USERNAME, D_PASSWORD);
mysql_select_db(D_DATABASE);
mysql_set_charset("utf8",$link);
$query = "SELECT COUNT(*) as totalno FROM ".D_PREFIX."Post WHERE Stat = '1'";
$result = mysql_query($query);
while($data=mysql_fetch_array($result)){
$count = $data['totalno'];
}
echo $count;
?>
5 תשובות
קודם כל יש כאן כמה בעיות בסיסיות -
1.אתה משתמש בדריבר שכבר כמה שנים לא נתמך באופן רשמי,אני לא רואה שום סיבה להשתמש בוא ועוד יותר לא מצליח להבין מדוע אנשים שלמדו ב 2-3 שנים אחרונות עדיין עובדים דרכו.
2.הלולאה הזאת מיותרת לגמרי,הרי זה ברור שהשאילתה תציג תוצאה אחת או אפס כך שאתה יכול פשוט לוותר על הלולאה ולהשתמש ישר ב fetch_array.
3.אין לך כאן שום טיפול בשגיאות ואתה מסתמך על זה שזה תמיד יעבוד. אתה לא בודק אם המסד הצליח להתחבר,אם קיימת הטבלה או אם השאילתה החזירה נתונים.
---------------------------------------------
מבחינת יעילות כמובן שאם זאת שאילתה שרצה הרבה פעמים והכמות עדכונים מועטה יהיה עדיף לשמור את הנתונים במטמון ולרענן אותם כל X שניות\דקות.
הקוד שהבאתי עובד ולוקח לו שנייה כדי להציג נתונים, השאילה היא אםאני יוותר על הלולאה זה יקצר את מהלך הצגת הנתונים.
ומבחינת יעילות אתה צודק זה רץ הרבה פעמים, ואין המון עדכונים והורדות (מדובר על פרוייקט התחלתי.
אבל כל מה שרציתי שבכניסה לדף הוא יציג ישר את מספר הנתונים ולא יקח לו כמה שניות אחרי טעינת הדף כדי להציג את הנתונים.
$(document).ready(function(){setInterval(function(){$.get('../pkg_nb-dw.php',function(response){$('.dwn').html(response);});},2000);});
</script>
אי אפשר למדוד יעילות ככה,אתה צריך לבדוק מה בדיוק לוקח לו זמן יכול להיות שברמת התשתית לוקח לבקשה המון זמן להגיע ובמקרה כזה אין לך מה לעשות חוץ מלהחליף חברת אחסון.
הדבר היחיד שאתה יכול לעשות ברמת הקוד זה לוודא שיש ל stat אינדקס
// Set up ..
define('D', true);
require '../include/config.php';
require '../include/connect.php';
try {
// lets connect to our database ..
$dns = 'mysql:host=' . D_SERVER . ';dbname=' . D_DATABASE . ';charset=utf8';
$dbh = new PDO($dns, D_USERNAME, D_PASSWORD, array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
));
} catch(PDOException $e) {
die($e); // for debug only, we need to use our custom message
}
// lets count the rows in our table
$query = "SELECT COUNT(1) AS `count` FROM `".D_PREFIX."Post` WHERE Stat = '1';";
echo $dbh->query($query)->fetchObject()->count;
// good bye my lover :D
-תשתמש ב
-אל תעבוד עם MySQL, כמו ש@Splash הזכיר כרב למעלה, הדרייבר הזה מיושן ואין לו כבר תמיכה.
-תוסיף אינדקס לטבלה.
המממ בהצלחה בונבונירה שלי D: